home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 February (DVD) / PCWorld_2008-02_DVD.iso / v cisle / PHP / PHP.exe / xampp-win32-1.6.5-installer.exe / phpMyAdmin / db_structure.php < prev    next >
Encoding:
PHP Script  |  2007-12-20  |  21.8 KB  |  557 lines

  1. <?php
  2. /* vim: set expandtab sw=4 ts=4 sts=4: */
  3. /**
  4.  *
  5.  * @version $Id: db_structure.php 10557 2007-08-11 13:34:20Z lem9 $
  6.  */
  7.  
  8. /**
  9.  *
  10.  */
  11. require_once './libraries/common.inc.php';
  12. require_once './libraries/Table.class.php';
  13.  
  14. /**
  15.  * Prepares the tables list if the user where not redirected to this script
  16.  * because there is no table in the database ($is_info is true)
  17.  */
  18. if (empty($is_info)) {
  19.     // Drops/deletes/etc. multiple tables if required
  20.     if ((!empty($submit_mult) && isset($selected_tbl))
  21.       || isset($mult_btn)) {
  22.         $action = 'db_structure.php';
  23.         $err_url = 'db_structure.php?'. PMA_generate_common_url($db);
  24.         require './libraries/mult_submits.inc.php';
  25.         $message = $strSuccess;
  26.     }
  27.     require './libraries/db_common.inc.php';
  28.     $url_query .= '&goto=db_structure.php';
  29.  
  30.     // Gets the database structure
  31.     $sub_part = '_structure';
  32.     require './libraries/db_info.inc.php';
  33. }
  34.  
  35. // 1. No tables
  36. if ($num_tables == 0) {
  37.     echo '<p>' . $strNoTablesFound . '</p>' . "\n";
  38.  
  39.     if (empty($db_is_information_schema)) {
  40.         require './libraries/display_create_table.lib.php';
  41.     } // end if (Create Table dialog)
  42.  
  43.     /**
  44.      * Displays the footer
  45.      */
  46.     require_once './libraries/footer.inc.php';
  47.     exit;
  48. }
  49.  
  50. // else
  51. // 2. Shows table informations - staybyte - 11 June 2001
  52.  
  53. require_once './libraries/bookmark.lib.php';
  54.  
  55. if (PMA_MYSQL_INT_VERSION >= 40101) {
  56.     require_once './libraries/mysql_charsets.lib.php';
  57.     $db_collation = PMA_getDbCollation($db);
  58. }
  59.  
  60. // Display function
  61. /**
  62.  * void PMA_TableHeader([bool $db_is_information_schema = false])
  63.  * display table header (<table><thead>...</thead><tbody>)
  64.  *
  65.  * @uses    PMA_showHint()
  66.  * @uses    PMA_MYSQL_INT_VERSION
  67.  * @uses    $GLOBALS['cfg']['PropertiesNumColumns']
  68.  * @uses    $GLOBALS['is_show_stats']
  69.  * @uses    $GLOBALS['strTable']
  70.  * @uses    $GLOBALS['strAction']
  71.  * @uses    $GLOBALS['strRecords']
  72.  * @uses    $GLOBALS['strApproximateCount']
  73.  * @uses    $GLOBALS['strType']
  74.  * @uses    $GLOBALS['strCollation']
  75.  * @uses    $GLOBALS['strSize']
  76.  * @uses    $GLOBALS['strOverhead']
  77.  * @uses    $GLOBALS['structure_tbl_col_cnt']
  78.  * @param   boolean $db_is_information_schema
  79.  */
  80. function PMA_TableHeader($db_is_information_schema = false)
  81. {
  82.     $cnt = 0; // Let's count the columns...
  83.  
  84.     if ($db_is_information_schema) {
  85.         $action_colspan = 3;
  86.     } else {
  87.         $action_colspan = 6;
  88.     }
  89.  
  90.     echo '<table class="data" style="float: left;">' . "\n"
  91.         .'<thead>' . "\n"
  92.         .'<tr><td></td>' . "\n"
  93.         .'    <th>' . $GLOBALS['strTable'] . '</th>' . "\n"
  94.         .'    <th colspan="' . $action_colspan . '">' . "\n"
  95.         .'        ' . $GLOBALS['strAction'] . "\n"
  96.         .'    </th>'
  97.         .'    <th>' . $GLOBALS['strRecords']
  98.         .PMA_showHint($GLOBALS['strApproximateCount']) . "\n"
  99.         .'    </th>' . "\n";
  100.     if (!($GLOBALS['cfg']['PropertiesNumColumns'] > 1)) {
  101.         echo '    <th>' . $GLOBALS['strType'] . '</th>' . "\n";
  102.         $cnt++;
  103.         if (PMA_MYSQL_INT_VERSION >= 40100) {
  104.             echo '    <th>' . $GLOBALS['strCollation'] . '</th>' . "\n";
  105.             $cnt++;
  106.         }
  107.     }
  108.     if ($GLOBALS['is_show_stats']) {
  109.         echo '    <th>' . $GLOBALS['strSize'] . '</th>' . "\n"
  110.            . '    <th>' . $GLOBALS['strOverhead'] . '</th>' . "\n";
  111.         $cnt += 2;
  112.     }
  113.     echo '</tr>' . "\n";
  114.     echo '</thead>' . "\n";
  115.     echo '<tbody>' . "\n";
  116.     $GLOBALS['structure_tbl_col_cnt'] = $cnt + $action_colspan + 3;
  117. } // end function PMA_TableHeader()
  118.  
  119. $titles = array();
  120. if (true == $cfg['PropertiesIconic']) {
  121.     $titles['Browse']     = '<img class="icon" width="16" height="16" src="' .$pmaThemeImage . 'b_browse.png" alt="' . $strBrowse . '" title="' . $strBrowse . '" />';
  122.     $titles['NoBrowse']   = '<img class="icon" width="16" height="16" src="' .$pmaThemeImage . 'bd_browse.png" alt="' . $strBrowse . '" title="' . $strBrowse . '" />';
  123.     $titles['Search']     = '<img class="icon" width="16" height="16" src="' .$pmaThemeImage . 'b_select.png" alt="' . $strSearch . '" title="' . $strSearch . '" />';
  124.     $titles['NoSearch']   = '<img class="icon" width="16" height="16" src="' .$pmaThemeImage . 'bd_select.png" alt="' . $strSearch . '" title="' . $strSearch . '" />';
  125.     $titles['Insert']     = '<img class="icon" width="16" height="16" src="' .$pmaThemeImage . 'b_insrow.png" alt="' . $strInsert . '" title="' . $strInsert . '" />';
  126.     $titles['NoInsert']   = '<img class="icon" width="16" height="16" src="' .$pmaThemeImage . 'bd_insrow.png" alt="' . $strInsert . '" title="' . $strInsert . '" />';
  127.     $titles['Structure']  = '<img class="icon" width="16" height="16" src="' .$pmaThemeImage . 'b_props.png" alt="' . $strStructure . '" title="' . $strStructure . '" />';
  128.     $titles['Drop']       = '<img class="icon" width="16" height="16" src="' .$pmaThemeImage . 'b_drop.png" alt="' . $strDrop . '" title="' . $strDrop . '" />';
  129.     $titles['NoDrop']     = '<img class="icon" width="16" height="16" src="' .$pmaThemeImage . 'bd_drop.png" alt="' . $strDrop . '" title="' . $strDrop . '" />';
  130.     $titles['Empty']      = '<img class="icon" width="16" height="16" src="' .$pmaThemeImage . 'b_empty.png" alt="' . $strEmpty . '" title="' . $strEmpty . '" />';
  131.     $titles['NoEmpty']    = '<img class="icon" width="16" height="16" src="' .$pmaThemeImage . 'bd_empty.png" alt="' . $strEmpty . '" title="' . $strEmpty . '" />';
  132.  
  133.     if ('both' === $cfg['PropertiesIconic']) {
  134.         $titles['Browse']     .= $strBrowse;
  135.         $titles['Search']     .= $strSearch;
  136.         $titles['NoBrowse']   .= $strBrowse;
  137.         $titles['NoSearch']   .= $strSearch;
  138.         $titles['Insert']     .= $strInsert;
  139.         $titles['NoInsert']   .= $strInsert;
  140.         $titles['Structure']  .= $strStructure;
  141.         $titles['Drop']       .= $strDrop;
  142.         $titles['NoDrop']     .= $strDrop;
  143.         $titles['Empty']      .= $strEmpty;
  144.         $titles['NoEmpty']    .= $strEmpty;
  145.     }
  146. } else {
  147.     $titles['Browse']     = $strBrowse;
  148.     $titles['Search']     = $strSearch;
  149.     $titles['NoBrowse']   = $strBrowse;
  150.     $titles['NoSearch']   = $strSearch;
  151.     $titles['Insert']     = $strInsert;
  152.     $titles['NoInsert']   = $strInsert;
  153.     $titles['Structure']  = $strStructure;
  154.     $titles['Drop']       = $strDrop;
  155.     $titles['NoDrop']     = $strDrop;
  156.     $titles['Empty']      = $strEmpty;
  157.     $titles['NoEmpty']    = $strEmpty;
  158. }
  159.  
  160. /**
  161.  * Displays the tables list
  162.  */
  163.  
  164. $_url_params = array(
  165.     'pos' => $pos,
  166.     'db'  => $db);
  167.  
  168. PMA_listNavigator($total_num_tables, $pos, $_url_params, 'db_structure.php', 'frame_content', $GLOBALS['cfg']['MaxTableList']);
  169.  
  170. ?>
  171. <form method="post" action="db_structure.php" name="tablesForm" id="tablesForm">
  172. <?php
  173. echo PMA_generate_common_hidden_inputs($db);
  174.  
  175. PMA_TableHeader($db_is_information_schema);
  176.  
  177. $i = $sum_entries = 0;
  178. $sum_size       = (double) 0;
  179. $overhead_size  = (double) 0;
  180. $overhead_check = '';
  181. $checked        = !empty($checkall) ? ' checked="checked"' : '';
  182. $num_columns    = $cfg['PropertiesNumColumns'] > 1 ? ceil($num_tables / $cfg['PropertiesNumColumns']) + 1 : 0;
  183. $row_count      = 0;
  184.  
  185.  
  186. $hidden_fields = array();
  187. $odd_row       = true;
  188. $at_least_one_view_exceeds_max_count = false;
  189. $sum_row_count_pre = '';
  190.  
  191. foreach ($tables as $keyname => $each_table) {
  192.     if ($each_table['TABLE_ROWS'] === null || $each_table['TABLE_ROWS'] < $GLOBALS['cfg']['MaxExactCount']) {
  193.         $each_table['TABLE_ROWS'] = PMA_Table::countRecords($db,
  194.             $each_table['TABLE_NAME'], $return = true, $force_exact = true);
  195.     }
  196.  
  197.     $table_encoded = urlencode($each_table['TABLE_NAME']);
  198.     // MySQL < 5.0.13 returns "view", >= 5.0.13 returns "VIEW"
  199.     $table_is_view = ($each_table['TABLE_TYPE'] === 'VIEW'
  200.                        || $each_table['TABLE_TYPE'] === 'SYSTEM VIEW');
  201.  
  202.     $alias = (!empty($tooltip_aliasname) && isset($tooltip_aliasname[$each_table['TABLE_NAME']]))
  203.                ? str_replace(' ', ' ', htmlspecialchars($tooltip_truename[$each_table['TABLE_NAME']]))
  204.                : str_replace(' ', ' ', htmlspecialchars($each_table['TABLE_NAME']));
  205.     $truename = (!empty($tooltip_truename) && isset($tooltip_truename[$each_table['TABLE_NAME']]))
  206.                ? str_replace(' ', ' ', htmlspecialchars($tooltip_truename[$each_table['TABLE_NAME']]))
  207.                : str_replace(' ', ' ', htmlspecialchars($each_table['TABLE_NAME']));
  208.  
  209.     // Sets parameters for links
  210.     $tbl_url_query = $url_query . '&table=' . $table_encoded;
  211.     $i++;
  212.  
  213.     $row_count++;
  214.     if ($table_is_view) {
  215.         $hidden_fields[] = '<input type="hidden" name="views[]" value="' .  $table_encoded . '" />';
  216.     }
  217.  
  218.     if ($each_table['TABLE_ROWS'] > 0) {
  219.         $browse_table = '<a href="sql.php?' . $tbl_url_query . '&pos=0">' . $titles['Browse'] . '</a>';
  220.         $search_table = '<a href="tbl_select.php?' . $tbl_url_query . '">' . $titles['Search'] . '</a>';
  221.     } else {
  222.         $browse_table = $titles['NoBrowse'];
  223.         $search_table = $titles['NoSearch'];
  224.     }
  225.  
  226.     if (! $db_is_information_schema) {
  227.         if (! empty($each_table['TABLE_ROWS'])) {
  228.             $empty_table = '<a href="sql.php?' . $tbl_url_query
  229.                  . '&sql_query=';
  230.             if (PMA_MYSQL_INT_VERSION >= 40000) {
  231.                 $empty_table .= urlencode('TRUNCATE ' . PMA_backquote($each_table['TABLE_NAME']))
  232.                      . '&zero_rows='
  233.                      . urlencode(sprintf($strTableHasBeenEmptied, htmlspecialchars($each_table['TABLE_NAME'])))
  234.                      . '" onclick="return confirmLink(this, \'TRUNCATE ';
  235.             } else {
  236.                 $empty_table .= urlencode('DELETE FROM ' . PMA_backquote($each_table['TABLE_NAME']))
  237.                      . '&zero_rows='
  238.                      . urlencode(sprintf($strTableHasBeenEmptied, htmlspecialchars($each_table['TABLE_NAME'])))
  239.                      . '" onclick="return confirmLink(this, \'DELETE FROM ';
  240.             }
  241.             $empty_table .= PMA_jsFormat($each_table['TABLE_NAME']) . '\')">' . $titles['Empty'] . '</a>';
  242.         } else {
  243.             $empty_table = $titles['NoEmpty'];
  244.         }
  245.         $drop_query = 'DROP '
  246.             . ($table_is_view ? 'VIEW' : 'TABLE')
  247.             . ' ' . PMA_backquote($each_table['TABLE_NAME']);
  248.         $drop_message = sprintf(
  249.             $table_is_view ? $strViewHasBeenDropped : $strTableHasBeenDropped,
  250.             str_replace(' ', ' ', htmlspecialchars($each_table['TABLE_NAME'])));
  251.     }
  252.  
  253.     // loic1: Patch from Joshua Nye <josh at boxcarmedia.com> to get valid
  254.     //        statistics whatever is the table type
  255.  
  256.     if (isset($each_table['TABLE_ROWS'])) {
  257.         // MyISAM, ISAM or Heap table: Row count, data size and index size
  258.         // is accurate.
  259.         if (preg_match('@^(MyISAM|ISAM|HEAP|MEMORY)$@', $each_table['ENGINE'])) {
  260.             if ($is_show_stats) {
  261.                 $tblsize                    =  doubleval($each_table['Data_length']) + doubleval($each_table['Index_length']);
  262.                 $sum_size                   += $tblsize;
  263.                 list($formatted_size, $unit) =  PMA_formatByteDown($tblsize, 3, ($tblsize > 0) ? 1 : 0);
  264.                 if (isset($each_table['Data_free']) && $each_table['Data_free'] > 0) {
  265.                     list($formatted_overhead, $overhead_unit)     = PMA_formatByteDown($each_table['Data_free'], 3, ($each_table['Data_free'] > 0) ? 1 : 0);
  266.                     $overhead_size           += $each_table['Data_free'];
  267.                 }
  268.             }
  269.             $sum_entries                    += $each_table['TABLE_ROWS'];
  270.         } elseif ($each_table['ENGINE'] == 'InnoDB') {
  271.             // InnoDB table: Row count is not accurate but data and index
  272.             // sizes are.
  273.             if ($is_show_stats) {
  274.                 $tblsize                    =  $each_table['Data_length'] + $each_table['Index_length'];
  275.                 $sum_size                   += $tblsize;
  276.                 list($formatted_size, $unit) =  PMA_formatByteDown($tblsize, 3, ($tblsize > 0) ? 1 : 0);
  277.             }
  278.             //$display_rows                   =  ' - ';
  279.             $sum_entries       += $each_table['TABLE_ROWS'];
  280.         } elseif (preg_match('@^(MRG_MyISAM|BerkeleyDB)$@', $each_table['ENGINE'])) {
  281.             // Merge or BerkleyDB table: Only row count is accurate.
  282.             if ($is_show_stats) {
  283.                 $formatted_size =  ' - ';
  284.                 $unit          =  '';
  285.             }
  286.             $sum_entries       += $each_table['TABLE_ROWS'];
  287.         } else {
  288.             // Unknown table type.
  289.             if ($is_show_stats) {
  290.                 $formatted_size =  'unknown';
  291.                 $unit          =  '';
  292.             }
  293.         }
  294.  
  295.         if (PMA_MYSQL_INT_VERSION >= 40100) {
  296.             if (isset($each_table['Collation'])) {
  297.                 $collation = '<dfn title="'
  298.                     . PMA_getCollationDescr($each_table['Collation']) . '">'
  299.                     . $each_table['Collation'] . '</dfn>';
  300.             } else {
  301.                 $collation = '---';
  302.             }
  303.         }
  304.  
  305.         if ($is_show_stats) {
  306.             if (isset($formatted_overhead)) {
  307.                 $overhead = '<a href="tbl_structure.php?'
  308.                     . $tbl_url_query . '#showusage">' . $formatted_overhead
  309.                     . ' ' . $overhead_unit . '</a>' . "\n";
  310.                 unset($formatted_overhead);
  311.                 $overhead_check .=
  312.                     "document.getElementById('checkbox_tbl_$i').checked = true;";
  313.             } else {
  314.                 $overhead = '-';
  315.             }
  316.         } // end if
  317.     } // end if (isset($each_table['TABLE_ROWS'])
  318.  
  319.     if ($num_columns > 0 && $num_tables > $num_columns
  320.       && (($row_count % $num_columns) == 0)) {
  321.         $row_count = 1;
  322.         $odd_row = true;
  323.     ?>
  324.     </tr>
  325. </tbody>
  326. </table>
  327.         <?php
  328.         PMA_TableHeader();
  329.     }
  330.     ?>
  331. <tr class="<?php echo $odd_row ? 'odd' : 'even'; $odd_row = ! $odd_row; ?>">
  332.     <td align="center">
  333.         <input type="checkbox" name="selected_tbl[]"
  334.             value="<?php echo $table_encoded; ?>"
  335.             id="checkbox_tbl_<?php echo $i; ?>"<?php echo $checked; ?> /></td>
  336.     <th><label for="checkbox_tbl_<?php echo $i; ?>"
  337.             title="<?php echo $alias; ?>"><?php echo $truename; ?></label>
  338.     </th>
  339.     <td align="center"><?php echo $browse_table; ?></td>
  340.     <td align="center">
  341.         <a href="tbl_structure.php?<?php echo $tbl_url_query; ?>">
  342.             <?php echo $titles['Structure']; ?></a></td>
  343.     <td align="center"><?php echo $search_table; ?></td>
  344.     <?php if (! $db_is_information_schema) { ?>
  345.     <td align="center">
  346.         <a href="tbl_change.php?<?php echo $tbl_url_query; ?>">
  347.             <?php echo $titles['Insert']; ?></a></td>
  348.     <td align="center"><?php echo $empty_table; ?></td>
  349.     <td align="center">
  350.         <a href="sql.php?<?php echo $tbl_url_query;
  351.             ?>&reload=1&purge=1&sql_query=<?php
  352.             echo urlencode($drop_query); ?>&zero_rows=<?php
  353.             echo urlencode($drop_message); ?>"
  354.             onclick="return confirmLink(this, '<?php echo PMA_jsFormat($drop_query, false); ?>')">
  355.             <?php echo $titles['Drop']; ?></a></td>
  356.     <?php } // end if (! $db_is_information_schema)
  357.  
  358.     // there is a null value in the ENGINE
  359.     // - when the table needs to be repaired, or
  360.     // - when it's a view
  361.     //  so ensure that we'll display "in use" below for a table
  362.     //  that needs to be repaired
  363.  
  364.     if (isset($each_table['TABLE_ROWS']) && ($each_table['ENGINE'] != null || $table_is_view)) {
  365.         if ($table_is_view  && $each_table['TABLE_ROWS'] >= $cfg['MaxExactCountViews']) {
  366.             $at_least_one_view_exceeds_max_count = true;
  367.             $row_count_pre = '~';
  368.             $sum_row_count_pre = '~';
  369.             $show_superscript = '<sup>1</sup>';
  370.         } elseif($each_table['ENGINE'] == 'InnoDB') {
  371.             // InnoDB table: Row count is not accurate
  372.             $row_count_pre = '~';
  373.             $sum_row_count_pre = '~';
  374.             $show_superscript = '';
  375.         } else {
  376.             $row_count_pre = '';
  377.             $show_superscript = '';
  378.         }
  379.     ?>
  380.     <td class="value"><?php echo $row_count_pre . PMA_formatNumber($each_table['TABLE_ROWS'], 0) . $show_superscript; ?></td>
  381.         <?php if (!($cfg['PropertiesNumColumns'] > 1)) { ?>
  382.     <td nowrap="nowrap"><?php echo ($table_is_view ? $strView : $each_table['ENGINE']); ?></td>
  383.             <?php if (isset($collation)) { ?>
  384.     <td nowrap="nowrap"><?php echo $collation ?></td>
  385.             <?php } ?>
  386.         <?php } ?>
  387.  
  388.         <?php if ($is_show_stats) { ?>
  389.     <td class="value"><a
  390.         href="tbl_structure.php?<?php echo $tbl_url_query; ?>#showusage"
  391.         ><?php echo $formatted_size . ' ' . $unit; ?></a></td>
  392.     <td class="value"><?php echo $overhead; ?></td>
  393.         <?php } // end if ?>
  394.     <?php } elseif ($table_is_view) { ?>
  395.     <td class="value">-</td>
  396.     <td><?php echo $strView; ?></td>
  397.     <td>---</td>
  398.         <?php if ($is_show_stats) { ?>
  399.     <td class="value">-</td>
  400.     <td class="value">-</td>
  401.         <?php } ?>
  402.     <?php } else { ?>
  403.     <td colspan="<?php echo ($structure_tbl_col_cnt - ($db_is_information_schema ? 5 : 8)) ?>"
  404.         align="center">
  405.         <?php echo $strInUse; ?></td>
  406.     <?php } // end if (isset($each_table['TABLE_ROWS'])) else ?>
  407. </tr>
  408.     <?php
  409. } // end foreach
  410.  
  411. // Show Summary
  412. if ($is_show_stats) {
  413.     list($sum_formatted, $unit) = PMA_formatByteDown($sum_size, 3, 1);
  414.     list($overhead_formatted, $overhead_unit) =
  415.         PMA_formatByteDown($overhead_size, 3, 1);
  416. }
  417. ?>
  418. </tbody>
  419. <tbody>
  420. <tr><td></td>
  421.     <th align="center" nowrap="nowrap">
  422.         <?php echo sprintf($strTables, PMA_formatNumber($num_tables, 0)); ?>
  423.     </th>
  424.     <th colspan="<?php echo ($db_is_information_schema ? 3 : 6) ?>" align="center">
  425.         <?php echo $strSum; ?></th>
  426.     <th class="value"><?php echo $sum_row_count_pre . PMA_formatNumber($sum_entries, 0); ?></th>
  427. <?php
  428. if (!($cfg['PropertiesNumColumns'] > 1)) {
  429.     $default_engine = PMA_DBI_get_default_engine();
  430.     echo '    <th align="center">' . "\n"
  431.        . '        <dfn title="'
  432.        . sprintf($strDefaultEngine, $default_engine) . '">' .$default_engine . '</dfn></th>' . "\n";
  433.     // Have to account for old MySQL with no collation (bug 1554885)
  434.     if (PMA_MYSQL_INT_VERSION >= 40100) {
  435.         // we got a case where $db_collation was empty
  436.         echo '    <th align="center">' . "\n";
  437.         if (! empty($db_collation)) {
  438.             echo '        <dfn title="'
  439.                 . PMA_getCollationDescr($db_collation) . ' (' . $strDefault . ')">' . $db_collation
  440.                 . '</dfn>';
  441.         }
  442.         echo '</th>';
  443.     }
  444. }
  445.  
  446. if ($is_show_stats) {
  447.     ?>
  448.     <th class="value"><?php echo $sum_formatted . ' ' . $unit; ?></th>
  449.     <th class="value"><?php echo $overhead_formatted . ' ' . $overhead_unit; ?></th>
  450.     <?php
  451. }
  452. ?>
  453. </tr>
  454. </tbody>
  455. </table>
  456.  
  457. <div class="clearfloat">
  458. <?php
  459. // Check all tables url
  460. $checkall_url = 'db_structure.php?' . PMA_generate_common_url($db);
  461. ?>
  462. <img class="selectallarrow" src="<?php echo $pmaThemeImage .'arrow_'.$text_dir.'.png'; ?>"
  463.     width="38" height="22" alt="<?php echo $strWithChecked; ?>" />
  464. <a href="<?php echo $checkall_url; ?>&checkall=1"
  465.     onclick="if (markAllRows('tablesForm')) return false;">
  466.     <?php echo $strCheckAll; ?></a>
  467. /
  468. <a href="<?php echo $checkall_url; ?>"
  469.     onclick="if (unMarkAllRows('tablesForm')) return false;">
  470.     <?php echo $strUncheckAll; ?></a>
  471. <?php if ($overhead_check != '') { ?>
  472. /
  473. <a href="#" onclick="unMarkAllRows('tablesForm');
  474.     <?php echo $overhead_check; ?> return false;">
  475.     <?php echo $strCheckOverhead; ?></a>
  476. <?php } ?>
  477.  
  478. <select name="submit_mult" onchange="this.form.submit();" style="margin: 0 3em 0 3em;">
  479. <?php
  480. echo '    <option value="' . $strWithChecked . '" selected="selected">'
  481.      . $strWithChecked . '</option>' . "\n";
  482. echo '    <option value="' . $strEmpty . '" >'
  483.      . $strEmpty . '</option>' . "\n";
  484. echo '    <option value="' . $strDrop . '" >'
  485.      . $strDrop . '</option>' . "\n";
  486. echo '    <option value="' . $strPrintView . '" >'
  487.      . $strPrintView . '</option>' . "\n";
  488. echo '    <option value="' . $strCheckTable . '" >'
  489.      . $strCheckTable . '</option>' . "\n";
  490. echo '    <option value="' . $strOptimizeTable . '" >'
  491.      . $strOptimizeTable . '</option>' . "\n";
  492. echo '    <option value="' . $strRepairTable . '" >'
  493.      . $strRepairTable . '</option>' . "\n";
  494. echo '    <option value="' . $strAnalyzeTable . '" >'
  495.      . $strAnalyzeTable . '</option>' . "\n";
  496. ?>
  497. </select>
  498. <script type="text/javascript">
  499. <!--
  500. // Fake js to allow the use of the <noscript> tag
  501. //-->
  502. </script>
  503. <noscript>
  504.     <input type="submit" value="<?php echo $strGo; ?>" />
  505. </noscript>
  506. <?php echo implode("\n", $hidden_fields) . "\n"; ?>
  507. </div>
  508. </form>
  509. <?php
  510. // Notice about row count for views
  511.  
  512. if ($at_least_one_view_exceeds_max_count && !$db_is_information_schema) {
  513.     echo '<div class="notice">' . "\n";
  514.     echo '<sup>1</sup>' . PMA_sanitize(sprintf($strViewMaxExactCount, PMA_formatNumber($cfg['MaxExactCountViews'], 0), '[a@./Documentation.html#cfg_MaxExactCountViews@_blank]', '[/a]')) . "\n";
  515.     echo '</div>' . "\n";
  516. }
  517. // display again the table list navigator
  518. PMA_listNavigator($total_num_tables, $pos, $_url_params, 'db_structure.php', 'frame_content', $GLOBALS['cfg']['MaxTableList']);
  519. ?>
  520. <hr />
  521.  
  522. <?php
  523. // Routines
  524. require './libraries/db_routines.inc.php';
  525.  
  526. /**
  527.  * Work on the database
  528.  * redesigned 2004-05-08 by mkkeck
  529.  */
  530. /* DATABASE WORK */
  531. /* Printable view of a table */
  532. echo '<p>';
  533. echo '<a href="db_printview.php?' . $url_query . '">';
  534. if ($cfg['PropertiesIconic']) {
  535.      echo '<img class="icon" src="' . $pmaThemeImage
  536.         .'b_print.png" width="16" height="16" alt="" />';
  537. }
  538. echo $strPrintView . '</a> ';
  539.  
  540. echo '<a href="./db_datadict.php?' . $url_query . '">';
  541. if ($cfg['PropertiesIconic']) {
  542.     echo '<img class="icon" src="' . $pmaThemeImage
  543.         .'b_tblanalyse.png" width="16" height="16" alt="" />';
  544. }
  545. echo $strDataDict . '</a>';
  546. echo '</p>';
  547.  
  548. if (empty($db_is_information_schema)) {
  549.     require './libraries/display_create_table.lib.php';
  550. } // end if (Create Table dialog)
  551.  
  552. /**
  553.  * Displays the footer
  554.  */
  555. require_once './libraries/footer.inc.php';
  556. ?>
  557.